vsftpd

Descripcion

Como configurar el servidro vsftpd

Para configurar el servidor lo haremos desde el archivo /etc/vsftpd.conf

Si estamos usando vsftpd como servicio tendremos que reiniciarlo al realizar modificaciones con el comando:

systemctl restart vsftpd
Usuarios locales

Por defecto cuando instalamos el servidor deberíamos de tener acceso con los usuarios creados en el sistema pero solo en modo lectura, la siguiente opción debería de estar habilitada para usar los usuarios locales:

local_enable=YES

Para habilitar la escritura lo hacemos con la siguiente opción:

write_enable=YES
Usuario anonimo

Para poder acceder con el usuario anonímo debemos de tener configuradas las siguientes opciones:

anonymous_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

chroot

Por defecto los usuarios locales no están enjaulados en sus carpetas personales, pueden moverse por todo el sistema de archivos, si queremos que no puedan salir de su carpeta personal podemos enjaularlos usando la siguiente configuracion:

chroot_local_user=YES

Los usuarios estarán limitados a su propia carpeta home, pero si queremos podemos usar la siguiente opción para forzar una carpeta distinta:

local_root=/srv/ftp

NOTA: esta opción puede traernos problemas como veremos a continuacion.

El usuario anonimo (anonymous) a diferencia de los usuarios normales si que está enjaulado dentro de /srv/ftp por defecto.

Troubleshooting

A la hora de usar chroot se nos puede dar el siguiente error:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Este error se da cuando tenemos un usuario enjaulado (aplicando chroot sobre una carpeta), y a su vez este usuario tiene permisos de escritura en dicha carpeta en la que está enjaulado, si queremos evitar este error podemos usar la siguiente configuracion (NO RECOMENDABLE):

allow_writeable_chroot=YES

Este metodo NO ES RECOMENDABLE ya que abre la puerta a ciertas vulnerabilidades de seguridad, como podemos leer aqui

La manera correcta para la utilización del chroot sería la de dejar la carpeta raíz sin permisos de escritura y crear una subcarpeta dentro de esta en la que si que tengamos permisos de escritura.

Usuario virtuales

Esto nos permitirá crear usuarios que no existen en el sistema local, pero que podemos usar exclusivamente para nuestro servidor FTP.

Necesitamos los siguientes paquetes:

A continuación seguimos los siguientes pasos:

Una vez hecho esto ya tendríamos nuestro usuario virtual user1 creado y listo para ser utilizado, todo lo que se suba con ese usuario estará en la carpeta /srv/ftp-virt/user1.

Para crear nuevos usuarios podemos utilizar el siguiente script (podemos almacenarlo en /etc/vsftpd/ para usarlo cuando queramos), solo nos preguntará el nombre de usuario y la contraseña, y ya creará todas las configuraciones necesarias, el script es necesario ejecutarlo como root:

#!/bin/bash
FTP_FOLDER="/srv/ftp-virt"
USERLIST_FILE="/etc/vsftpd/userlist"

echo "Nombre usuario:"
read name
echo "Password:"
read pass

echo $name >> "$USERLIST_FILE"
echo $pass >> "$USERLIST_FILE"

db_load -T -t hash -f "$USERLIST_FILE" /etc/vsftpd/userlist.db

mkdir -p "$FTP_FOLDER/$name/my-uploads"

chown -R ftp-virt:ftp-virt "$FTP_FOLDER/$name"
chmod 555 "$FTP_FOLDER/$name"
chmod 775 "$FTP_FOLDER/$name/my-uploads"

echo "local_root=$FTP_FOLDER/$name" > /etc/vsftpd/user_conf/$name

Para borrar un usuario virtual tenemos que eliminarlo de los siguientes sitios:

Tags

Linux | ftp | config